package com.kancy.vip.pattern.proxy.dynamicproxy;

/**
 * @author kancy
 * @date 2019/3/16 16:54
 */
import com.kancy.vip.pattern.proxy.Love;
import com.kancy.vip.pattern.proxy.Person;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.lang.reflect.UndeclaredThrowableException;

public final class GirlProxy extends Proxy implements Love {
	private static Method m1;
	private static Method m2;
	private static Method m3;
	private static Method m0;

	public GirlProxy(InvocationHandler var1)   {
		super(var1);
	}

	public final boolean equals(Object var1)   {
		try {
			return (Boolean)super.h.invoke(this, m1, new Object[]{var1});
		} catch (RuntimeException | Error var3) {
			throw var3;
		} catch (Throwable var4) {
			throw new UndeclaredThrowableException(var4);
		}
	}

	public final String toString()   {
		try {
			return (String)super.h.invoke(this, m2, (Object[])null);
		} catch (RuntimeException | Error var2) {
			throw var2;
		} catch (Throwable var3) {
			throw new UndeclaredThrowableException(var3);
		}
	}



	public final int hashCode()   {
		try {
			return (Integer)super.h.invoke(this, m0, (Object[])null);
		} catch (RuntimeException | Error var2) {
			throw var2;
		} catch (Throwable var3) {
			throw new UndeclaredThrowableException(var3);
		}
	}

	public final boolean findLove(Person var1)   {
		try {
			return (Boolean)super.h.invoke(this, m3, new Object[]{var1});
		} catch (RuntimeException | Error var3) {
			throw var3;
		} catch (Throwable var4) {
			throw new UndeclaredThrowableException(var4);
		}
	}

	static {
		try {
			m1 = Class.forName("java.lang.Object").getMethod("equals", Class.forName("java.lang.Object"));
			m2 = Class.forName("java.lang.Object").getMethod("toString");
			m3 = Class.forName("com.kancy.vip.pattern.proxy.Love").getMethod("findLove", Class.forName("com.kancy.vip.pattern.proxy.Person"));
			m0 = Class.forName("java.lang.Object").getMethod("hashCode");
		} catch (NoSuchMethodException var2) {
			throw new NoSuchMethodError(var2.getMessage());
		} catch (ClassNotFoundException var3) {
			throw new NoClassDefFoundError(var3.getMessage());
		}
	}
}

